import { IPSAppWF } from '../../app/wf/ipsapp-wf';
import { IPSDataEntity } from '../ipsdata-entity';
import { IPSDELogicNode } from './ipsdelogic-node';
import { IPSDELogicParam } from './ipsdelogic-param';
import { IPSDEWF } from '../wf/ipsdewf';
import { IPSWorkflow } from '../../wf/ipsworkflow';

/**
 *
 * 继承父接口类型值[STARTWF]
 * @export
 * @interface IPSDEStartWFLogic
 */
export interface IPSDEStartWFLogic extends IPSDELogicNode {
  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get dstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 目标实体对象
   *
   * @type {IPSDataEntity}
   */
  getDstPSDataEntity(): IPSDataEntity | null;

  /**
   * 目标实体对象
   *
   * @type {IPSDataEntity}
   */
  get dstPSDataEntity(): IPSDataEntity | null;

  /**
   * 目标实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getDstPSDataEntityMust(): IPSDataEntity;

  /**
   * 应用工作流对象
   *
   * @type {IPSAppWF}
   */
  getPSAppWF(): IPSAppWF | null;

  /**
   * 应用工作流对象
   *
   * @type {IPSAppWF}
   */
  get psAppWF(): IPSAppWF | null;

  /**
   * 应用工作流对象（必须存在）
   *
   * @type {IPSAppWF}
   */
  getPSAppWFMust(): IPSAppWF;

  /**
   * 实体工作流对象
   *
   * @type {IPSDEWF}
   */
  getPSDEWF(): IPSDEWF | null;

  /**
   * 实体工作流对象
   *
   * @type {IPSDEWF}
   */
  get psDEWF(): IPSDEWF | null;

  /**
   * 实体工作流对象（必须存在）
   *
   * @type {IPSDEWF}
   */
  getPSDEWFMust(): IPSDEWF;

  /**
   * 工作流对象
   *
   * @type {IPSWorkflow}
   */
  getPSWorkflow(): IPSWorkflow | null;

  /**
   * 工作流对象
   *
   * @type {IPSWorkflow}
   */
  get psWorkflow(): IPSWorkflow | null;

  /**
   * 工作流对象（必须存在）
   *
   * @type {IPSWorkflow}
   */
  getPSWorkflowMust(): IPSWorkflow;
}
